<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // //getter语法
        // class A{
        //     //直接在函数前添加get声明调用getter语法
        //     get name(){
        //         return "1"
        //     }
        //     set name (value) {
        //         console.log('setter:' + value)
        //     }
        // }
        // var a =  new A()

        //动态设置
        //在外部创建变量
        // let methodName = 'test'
        // class A {
        //     [methodName] () {}
        // }
        // var a = new A()

        //静态方法和属性
        // function fn () {}
        // //通过.不会继承到实例上
        // fn.a = 1
        // fn.b = function() {}

        // var f = new fn
       /* 控制台通过f.a 和 f.b无法访问；只能通过fn.a 和fn.b访问  */

       //class中获取静态属性和方法
    //  class A {
    // //static表示有静态的属性和方法
    // static fn () {
    //     this.getValue() //此处this指向的是class类，不是new A实例
    // }
    // //定义静态方法
    // static getValue() {
    //     console.log('张三')
    // }
    // //class本身的方法
    // getValue(){
    //     console.log('李四')
    // }
    //    }
    //   var a = new A()
    //  //输出为'张三'说明A.getValue()为静态方法，可以通过class.的方式获取
    //  //在类中静态方法和class本身的方法可以重名
    //  A.getValue()
    //  a.getValue()


    //定义实例属性写法1
    class A {
        a = 1
        b = 'SUCCESS'
    }
    //输出后a和b都在当前实例中
    var a = new A()

    //定义实例属性写法2
    // class A {
    //     constructor () {
    //         this.a = 1
    //         this.b = 'SUCCESS'
    //     }
    // }
    //两种写法是一样的

    </script>
</body>
</html>